package com.tedu.api.list;

import java.util.Collection;

/**测试：   ①创建类：Fruit--属性：名字 | 方法：获取名称  |  构造器
 *         ②创建两个子类：Apple、Orange--构造器：传水果名
 *         ③创建类：TestJob类 泛型  ？  extends  父类
 *           约束-----静态的方法printFruit()
 *           约束限定传入子类一定是继承父类操作才可以使用
 *         ④单元测试：testE（）测试--约束是否限制成功
 *  实际开发应用中，高级程序员制定！
 *
 */
public class Fruit {
    private String name;//私有属性  name   水果名称

    public String getName() {//获取名字
        return name;
    }

    public Fruit(String name) {//有参数构造器
        this.name = name;
    }
}
//创建两个子类：Apple和Orange
class Apple extends Fruit{

    public Apple() { //Apple a=new Apple
        super("🍎");
    }
}
class Orange extends Fruit{
    public Orange() {
        super("橘子");
    }
}
//创建TestJob类---静态方法 printFruit：添加约束：传入类型一定是父类的子类
class TestJob{                //?[任意类型]extends Fruit
                               //传入类型必须继承与Fruit父类
    public static void printFrout(Collection<? extends Fruit>  fruits){
        //增强for循环：父类Fruit 名称
        for (Fruit fruit:fruits){//获取继承【Apple、Orange】与父类的功能
            //打印对应名称对象
            System.out.println(fruit.getName());
        }
    }
}
//测试：上届限定：一定继承Fruit【pear不继承Fruit】
class Pear{

}